package com.java复习.集合的学习;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class List结构集合 {
    public static void main(String[] args) {
        // 数组是定长的，数据类型是统一的
        // 集合----用于存放多个不同类型的数据且可以自动扩容的一种数据类型

        /*
        集合有三种：----指向的是地址
           1、List结构--有下标，可存放重复的数据，单列集合   ArrayList()：单线程，线程不安全   LinkedList：线程安全，多线程
           2、Set结构--没有下标，不可存放重复的数据，单列集合  （去重）
           3、Map结构--由键值对的形式存储数据，key不能重复，val可重复
        */

        List list = new ArrayList();
        // 增删改查

        //1、增
        list.add(12);
        list.add("冷建发");
        list.add(true);
        list.add(12.12);


        //取值
        System.out.println("===========取值==========");
        System.out.println(list.get(1));  // 取出来的值是Object类型
        Object str = list.get(0);
        System.out.println(str);
        String str1 = (String)list.get(1);  //强转成String
        System.out.println(str1);


        // 遍历
        System.out.println("===========遍历==========");
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }


        // 删除----可根据下标删除，也可以根据元素来删除，整数只能通过下标删除
        System.out.println("===========删除==========");
        list.remove(list.get(2)); //或者list.remove(true);


        // 遍历
        System.out.println("===========删除后遍历==========");
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }

        // 清空集合
//        list.clear();
//        System.out.println("===========清空后遍历==========");
//        // 遍历
//        for (int i=0;i<list.size();i++){
//            System.out.println(list.get(i));
//        }


        // 修改
        System.out.println("===========修改==========");
        list.set(1,"冷某人");

        System.out.println("===========修改后遍历==========");
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }





        // 进阶用法----易犯错
        // 可以通过迭代器进行遍历---------相当于点名器
        // 迭代器遍历时，不能向集合中添加，或删除数据
        // 修改数据
        System.out.println("=========用迭代器遍历============");
        Iterator it = list.iterator();
        while (it.hasNext()){
            Object object = it.next();
            System.out.println(object);
        }


        // 迭代器简单用法
        System.out.println("=========迭代器简单用法============");
        //（集合中的数据类型 变量:被遍历的集合）
        for (Object obj:list){
            System.out.println(obj);
        }






    }
}
